package gruppo12.msp;

import java.util.ArrayList;

import android.app.AlertDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

/**
 * <p>
 * Classe che estende ItemizedOverlay e permette di aggiungere nuovi oggetti
 * alla mappa
 * </p>
 * 
 * @author Duca Antonio, Festa Jacopo, Fiorilli Domenico, Granese Dante, Lemma
 *         Saverio, Lombardi Marco e Pierno Fiore
 * 
 */
public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> {

	private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();
	private Context context;

	/**
	 * Costruttore della classe
	 * 
	 * @param defaultMarker
	 *            icona dell'oggetto
	 */
	public CustomItemizedOverlay(Drawable defaultMarker) {
		super(boundCenterBottom(defaultMarker));
	}

	/**
	 * Costruttore della classe
	 * 
	 * @param defaultMarker
	 *            icona dell'oggetto
	 * @param context
	 *            context dell'oggetto
	 */
	public CustomItemizedOverlay(Drawable defaultMarker, Context context) {
		this(defaultMarker);
		this.context = context;
	}

	/**
	 * Metodo che consente la creazione di un item
	 */
	protected OverlayItem createItem(int i) {
		return mapOverlays.get(i);
	}

	/**
	 * Metodo che fornisce la dimensione della lista dei componenti visualizzati
	 * sulla mappa
	 */
	public int size() {
		return mapOverlays.size();
	}

	/**
	 * Metodo per la gestione del tocco su di un elemento, quando si tappa
	 * sull'overlay
	 */
	protected boolean onTap(int index) {
		OverlayItem item = mapOverlays.get(index);
		AlertDialog.Builder dialog = new AlertDialog.Builder(context);
		dialog.setTitle(item.getTitle());
		dialog.setMessage(item.getSnippet());
		dialog.show();
		return true;
	}

	/**
	 * Metodo che consente di aggiungere un overlay di tipo OverlayItem alla
	 * mappa
	 * 
	 * @param overlay
	 *            oggetto di tipo OverlayItem
	 */
	public void addOverlay(OverlayItem overlay) {
		mapOverlays.add(overlay);
		this.populate();
	}

}